// 前面介绍的box只有横向和纵向两种控制方式，如果想对容器内的构件进行更加复杂的控制，可以使用组合表（table）
// 其允许利用行和列来控制构件的放置，且构件可以取多行或多列
/* 该案例为在一个窗口中添加三个按钮*/
#include <stdio.h>
#include <stdlib.h>
#include <gtk/gtk.h>

int main(int argc, char *argv[]){
	
	// 创建窗体、按钮和组合表的指针
	GtkWidget *window,*button,*table;

	char title[] = "table test!";

	// 窗体初始化
	gtk_init(&argc,&argv);
	window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
	gtk_window_set_title(GTK_WINDOW(window),title);
	gtk_widget_set_usize(window,300,300);
	gtk_widget_set_uposition(window,300,300);
	// 退出事件的回调函数
	gtk_signal_connect(GTK_OBJECT(window),"delete_event", G_CALLBACK(gtk_main_quit),NULL);

	// 创建4x4的table组合表
	table = gtk_table_new(4,4,FALSE);
	
	// 创建一个按钮，并将其添加到table中
	button = gtk_button_new_with_label("Button1");
	gtk_table_attach(GTK_TABLE(table),button,0,1,0,1,GTK_FILL,GTK_FILL,0,0);
	gtk_widget_show(button);

	// 创建一个按钮，并将其添加到table中
	button = gtk_button_new_with_label("Button2");
	gtk_table_attach(GTK_TABLE(table),button,1,2,1,2,GTK_FILL,GTK_FILL,0,0);
	gtk_widget_show(button);

	// 创建一个按钮，并将其添加到table中
	button = gtk_button_new_with_label("Button3");
	gtk_table_attach_defaults(GTK_TABLE(table),button,2,3,2,3);
	gtk_widget_show(button);
	
	// 将table放入到窗体中s
	gtk_container_add(GTK_CONTAINER(window),table);
	gtk_widget_show(table);
	gtk_widget_show(window);

	gtk_main();

	return 0;

}

